package com.apps.java.javanote02;

public class _14抽象类 {
    /**
     * 抽象类
     * 	在java中，一个没有方法体的方法应该定义为抽象方法，而类中如果有抽象方法，该类必须定义为抽象类。
     *
     * 	一、特点
     * 		1.抽象类和抽象方法必须使用abstract关键字修饰
     * 			public abstract class 类名{}
     * 			public abstract void 方法名();
     * 		2.抽象类中不一定有抽象方法，但是有抽象方法的类一定是抽象类
     * 			public abstract class a{
     * 				public void 普通方法(){}
     * 			} ---> 这是可以的
     *
     * 			public class a{
     * 				public abstract void 抽象方法();
     * 			} ---> 这是不可以的 报错！
     * 		3.抽象类不能实例化
     * 			如何实例化：参照多态的方式，通过子类对象实例化，这也叫抽象类多态。
     * 		4.抽象类的子类
     * 			a.要么重写抽象类中所有抽象方法
     * 			b.要么子类本身也是抽象类
     *
     * 	二、抽象类的成员特点
     * 		1.成员变量
     * 			a.可以是变量
     * 			b.也可以是常量
     * 		2.构造方法
     * 			a.有构造方法，但不能实例化：作用是用于子类访问父类数据的初始化。
     * 		3.成员方法
     * 			a.可以有抽象方法：限定子类
     * 			b.也可以有非抽象方法：提高代码复用性
     *
     * 	三、抽象类名作为形参和返回值
     * 		1.方法的形参是抽象类名，其实需要的是该抽象类的子类对象
     * 		2.方法的返回值是抽象类名，其实返回的是该抽象类的子类对象
     *
     *
     */
}
